package com.example.project.projectspringcloud.entity.order;

import com.example.project.projectspringcloud.common.Constants;
import com.example.project.projectspringcloud.entity.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.constraints.NotNull;
import java.util.Date;

@Data
@EqualsAndHashCode(callSuper = false)
public class OrderMake extends BaseEntity {

    /**
     * 关联订单ID
     */
    private Integer orderId;

    public final String RECEIPT_CONTENT_DEFAULT = "短视频拍摄";

    /**
     * 作品信息
     * <p>
     * 同款ID
     */
    private Integer theSameStyleId;

    /**
     * 创建订单类型 1. 同款 2. 私人订制
     */
    private Integer type;

    /**
     * 摄影师
     */
    private Integer photographer;

    /**
     * 编剧
     */
    private Integer scriptwriter;

    /**
     * 作品类型
     */
    @NotNull(message = Constants.Tip.PLEASE_CHOOSE_VIDEO_TYPE)
    private Integer videoType;

    /**
     * 时长
     */
    private Integer duration;

    /**
     * 拍摄信息
     * <p>
     * 拍摄地
     */
    @NotNull(message = Constants.Tip.PLEASE_CHOOSE_LOCATION)
    private Integer location;

    /**
     * 拍摄档期
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @NotNull(message = Constants.Tip.PLEASE_CHOOSE_EXECUTE_DATE)
    private Date[] executeDates;

    /**
     * 备注
     */
    private String remark;

    /**
     * 套餐Id
     */
    private Integer combo;

    /**
     * 发票信息
     * <p>
     * 是否需要发票
     */
    private boolean isNeedReceipt = false;

    /**
     * 发票类型 1. 纸质 2. 电子
     */
    private Integer receiptType;

    /**
     * 发票抬头 1. 个人 2. 单位
     */
    private Integer receiptHeadType;

    private String receiptHead;

    /**
     * 税号
     */
    private String dutyNo;

    /**
     * 发票内容
     */
    private String receiptContent = this.RECEIPT_CONTENT_DEFAULT;
    ;

    /**
     * 个人/单位名称
     */
    private String unitName;

    /**
     * 地址/电话
     */
    private String address;

    /**
     * 开户银行
     */
    private String bank;

    /**
     * 银行账户
     */
    private String bankAccount;

    /**
     * 备注
     */
    private String receiptRemark;

    /**
     * 收票人姓名
     */
    private String receiveName;

    /**
     * 收票人联系电话
     */
    private String contactPhone;

    /**
     * 联系邮箱
     */
    private String contactEmail;

    /**
     * 邮寄地址
     */
    private Integer postAddress;

    /**
     * 邮寄街道
     */
    private String postStreet;

    /**
     * 优惠券
     * <p>
     * 使用优惠券ID
     */
    private Integer discountcouponId;
}
